home *** CD-ROM | disk | FTP | other *** search
/ Amiga Plus 2002 #11 / Amiga Plus CD - 2002 - No. 11.iso / Tools / Development / PowerD / powerd / lib / warpup.ass < prev    next >
Encoding:
Text File  |  2002-10-28  |  2.6 KB  |  117 lines

  1. START    movem.l    d0/a0,-(a7)    ;save initial values
  2.     movea.l    $4.w,a6
  3.     suba.l    a1,a1
  4.     jsr    (-294,a6)        ; FindTask()
  5.     move.l    d0,a4
  6.     tst.l    (172,a4)        ; process.cli
  7.     beq.s    workbench
  8.     movem.l    (a7)+,d0/a0    ;restore regs
  9.     bra.s    cli        ;and run the user prog
  10. workbench    lea    (92,a4),a0    ; process.msgport
  11.     jsr    (-384,a6)        ;wait for a message (WaitPort(())
  12.     lea    (92,a4),a0    ; process.msgport
  13.     jsr    (-372,a6)        ;then get it (GetMsg())
  14.     move.l    d0,_wbmessage        ;save it for later reply
  15.     movem.l    (a7)+,d0/a0    ;restore
  16. cli    bsr.s    _START        ;call our program
  17.     move.l    d0,-(a7)        ;save it
  18.     tst.l    _wbmessage
  19.     beq.s    exittodos        ;if I was a CLI
  20.     jsr    (-132,a6)        ; Forbid()
  21.     move.l    _wbmessage,a1
  22.     jsr    (-138,a6)        ; Permit()
  23. exittodos    move.l    (a7)+,d0        ;exit code
  24.     rts
  25.  
  26. _START    move.l    a0,_arg
  27.     clr.b    (-1,a0,d0.w)
  28.     movea.l    $4.w,a6
  29.     move.l    a6,_ExecBase
  30.     lea    (DOSName,pc),a1
  31.     moveq    #37,d0
  32.     jsr    (-552,a6)        ; OpenLibrary()
  33.     move.l    d0,_DOSBase
  34.     beq.s    .FINISH
  35.  
  36.     movea.l    d0,a6
  37.     jsr    (-60,a6)        ; Output()
  38.     move.l    d0,_stdout
  39.     jsr    (-54,a6)        ; Input()
  40.     move.l    d0,_stdin
  41.  
  42.     movea.l    $4.w,a6
  43.     lea    (IntName,pc),a1
  44.     moveq    #37,d0
  45.     jsr    (-552,a6)        ; OpenLibrary()
  46.     move.l    d0,_IntuitionBase
  47.     beq.s    .CLOSEDOS
  48.  
  49.     lea    (GfxName,pc),a1
  50.     moveq    #37,d0
  51.     jsr    (-552,a6)        ; OpenLibrary()
  52.     move.l    d0,_GfxBase
  53.     beq.s    .CLOSEINT
  54.  
  55.     lea    (PPCName,pc),a1
  56.     moveq    #7,d0
  57.     jsr    (-552,a6)        ; OpenLibrary()
  58.     move.l    d0,_PowerPCBase
  59.     beq.s    .CLOSEGFX
  60.     movea.l    d0,a6
  61.  
  62.     lea    (ppcstruct,pc),a0    ; load ppc structure
  63.     xref    _LinkerDB
  64.     lea    _LinkerDB,a4    ; get local data
  65.     move.l    _PowerPCBase,a1    ; get powerpc.library pointer
  66.     move.l    a4,$44(a0)    ; store a4/r2
  67.     jsr    (-30,a6)
  68.     lea    (ppcstruct,pc),a0
  69.     move.l    (20,a0),d2
  70.  
  71.     movea.l    4.w,a6
  72.     movea.l    _PowerPCBase,a1
  73.     jsr    (-414,a6)        ; CloseLibrary()
  74. .CLOSEGFX    movea.l    _GfxBase,a1
  75.     jsr    (-414,a6)        ; CloseLibrary()
  76. .CLOSEINT    movea.l    _IntuitionBase,a1
  77.     jsr    (-414,a6)        ; CloseLibrary()
  78. .CLOSEDOS    movea.l    _DOSBase,a1
  79.     jsr    (-414,a6)        ; CloseLibrary()
  80. .FINISH    move.l    d2,d0
  81.     rts
  82. ****************************************
  83. DOSName    dc.b    'dos.library',0
  84. IntName    dc.b    'intuition.library',0
  85. GfxName    dc.b    'graphics.library',0
  86. PPCName    dc.b    'powerpc.library',0
  87.     cnop    0,4
  88. ****************************************
  89.     xref    _main
  90. ppcstruct    dc.l    _main
  91.     dc.l    0,0,0,0
  92.     dc.l    0,0,0,0,0,0,0,0    ; d0-d7
  93.     dc.l    0,0,0,0,0,0,0    ; a0-a6
  94.     dc.d    0,0,0,0,0,0,0,0    ; fp0-fp7
  95. ****************************************
  96.     xdef    _DOSBase
  97.     xdef    _IntuitionBase
  98.     xdef    _GfxBase
  99.     xdef    _ExecBase
  100.     xdef    _PowerPCBase
  101.     xdef    _arg
  102.     xdef    _stdout
  103.     xdef    _stdin
  104.     xdef    _wbmessage
  105. ****************************************
  106.     section    ".tocd",data
  107.     dcb.b    32,0
  108. _PowerPCBase    dc.l    0
  109. _ExecBase        dc.l    0
  110. _DOSBase        dc.l    0
  111. _IntuitionBase    dc.l    0
  112. _GfxBase        dc.l    0
  113. _arg        dc.l    0
  114. _stdout        dc.l    0
  115. _stdin        dc.l    0
  116. _wbmessage    dc.l    0
  117.